package com.macro.mall.service.impl;

import com.macro.mall.mapper.PmsProductEvaluationTagsMapper;
import com.macro.mall.model.PmsProductCategory;
import com.macro.mall.model.PmsProductEvaluationTags;
import com.macro.mall.service.PmsProductCategoryService;
import com.macro.mall.service.PmsProductEvaluationTagsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * @Author：Minxiao-Hao
 * @Description:
 * @name：PmsProductEvaluationTagsServiceImpl
 * @Date：2024/10/25 17:08
 */
@Service
public class PmsProductEvaluationTagsServiceImpl implements PmsProductEvaluationTagsService {
    @Autowired
    private PmsProductEvaluationTagsMapper pipelineEvaluationTagsServiceMapper;
    @Autowired
    private PmsProductCategoryService productCategoryService;
    /**
     * 添加商品评价标签
     * @param pmsProductEvaluationTags 商品评价标签
     * @return 添加结果条数
     */
    @Override
    public int add(PmsProductEvaluationTags pmsProductEvaluationTags) {
        return pipelineEvaluationTagsServiceMapper.add(pmsProductEvaluationTags);
    }
    /**
     * 删除商品评价标签
     * @param id 标签id
     * @return 删除结果条数
     */
    @Override
    public int delete(Long id) {
        return pipelineEvaluationTagsServiceMapper.delete(id);
    }
    /**
     * 修改商品评价标签
     * @param id 标签id
     * @param pmsProductEvaluationTags 商品评价标签
     * @return 修改结果条数
     */
    @Override
    public int update(Long id, PmsProductEvaluationTags pmsProductEvaluationTags) {
        return pipelineEvaluationTagsServiceMapper.update(id,pmsProductEvaluationTags);
    }
    /**
     * 根据分类id获取旗下的标签
     * @param categoryId 分类id
     * @return 标签列表
     */
    @Override
    public List<PmsProductEvaluationTags> selectList(Long categoryId) {
        List<PmsProductEvaluationTags> pmsProductEvaluationTags = pipelineEvaluationTagsServiceMapper.selectList(categoryId);
        List<PmsProductCategory> list = productCategoryService.list();
        // 转map, key 为 id, value 为 name
        Map<Long, String> collect = list.stream()
                .collect(Collectors.toMap(PmsProductCategory::getId, PmsProductCategory::getName));
        // 更新 pmsProductEvaluationTags 的名称
        List<PmsProductEvaluationTags> updatedTags = pmsProductEvaluationTags.stream()
                .peek(tag -> {
                    String name = collect.get(Long.valueOf(tag.getCategoryId()));
                    if (name != null) {
                        tag.setName(name);
                    }
                })
                .collect(Collectors.toList());

        return updatedTags; // 返回更新后的列表

    }
    /**
     * 获取标签详情
     * @param id 标签id
     * @return 标签详情对象
     */
    @Override
    public PmsProductEvaluationTags getItem(Long id) {
        PmsProductEvaluationTags item = pipelineEvaluationTagsServiceMapper.getItem(id);
        return item;
    }
}
